Skip to content

py: handle nil module pointers in RunCode - #260

Open
ac1982 wants to merge 1 commit into
go-python:mainfrom
ac1982:fix-nil-module-run-code
Open

ac1982 wants to merge 1 commit into
go-python:mainfrom
ac1982:fix-nil-module-run-code

Conversation

@ac1982

@ac1982 ac1982 commented Oct 11, 2026

Copy link
Copy Markdown

Passing a typed nil *py.Module to RunCode currently dereferences mod.Globals and panics. This affects callers that carry a module pointer through a loop and initialize it on the first RunFile/RunSrc call, as reported by @SolarLune in #249.

Treat a nil module pointer like an untyped nil: create and return a new module. Non-nil module pointers still execute against the existing globals. Document the typed-nil behavior and exercise RunCode, RunSrc, and RunFile, followed by reuse of the returned module.

Fixes #249.

Validation on Linux/arm64:

  • Each of the three entry-point regressions panics before the fix and passes afterward.
  • Go 1.27.1: the full project runner go run ./ci/run-tests.go -tags=ci -race -coverpkg=github.com/go-python/gpython/... passes.
  • Go 1.18.10: targeted regression passes; Staticcheck 2022.1.3 passes for all packages.
  • goimports and git diff --check pass. Standalone Go 1.27.1 go vet ./... reports the same 182 existing diagnostics on unchanged main (unkeyed literals and unreachable code); no new diagnostics.
  • Windows, macOS, and browser/WASM execution were not run.

Required author registration: go-python/license#24.

AI assistance: implementation and tests were developed and verified with an AI coding agent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

py.RunFile / RunCode doesn't handle a nil module pointer

1 participant